package demo07;

import java.util.ArrayList;

/*
 *  自动装箱与自动拆箱：
 *      基本类型的数据和包装类之间可以自动相互转换
 *      使用前提：JDK1.5+的新特性
 */
public class Demo02Integer {
    public static void main(String[] args) {
        /*
         *  自动装箱：直接把int类型的整数赋值给包装类
         *  Integer integer = 1; 就相当于：Integer integer = new Integer(1);
         */
        Integer integer = 1;
        System.out.println(integer);

        /*
         *  自动拆箱：integer是包装类，无法直接参与运算，可以自动转换为基本类型的数据，再参与运算
         *  integer + 2; 就相当于：integer.intValue() + 2 = 3; 
         *  integer = integer + 2; 就相当于：integer = new Integer(3);（即自动装箱）
         */
        integer = integer + 2;
        System.out.println(integer);

        // ArrayList集合无法直接存储整数，但可以存储Integer包装类
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1); // 自动装箱，相当于：list.add(new Integer(1));
        int i = list.get(0); // 自动拆箱，相当于：int i = list.get(0).intValue();
    }
}
